# Makefile for Microsoft Visual Studio 2013 and later.
# usage: nmake -f makefile.msc
# K.M. Syring (syring@gsf.de)
# Fixed up by JRS for bzip2-0.9.5d release.

CC=cl
CFLAGS= -DWIN32 -DBZ_LCCWIN32 -MD -Ox -D_FILE_OFFSET_BITS=64 -nologo
RC=rc

OBJS= blocksort.obj  \
      huffman.obj    \
      crctable.obj   \
      randtable.obj  \
      compress.obj   \
      decompress.obj \
      bzlib.obj

all: dll lib bzip2 test

bzip2: dll bzip2.res bzip2recover.res
	$(CC) $(CFLAGS) /Febzip2 bzip2.c bz2-1.lib setargv.obj bzip2.res
	$(CC) $(CFLAGS) /Febzip2recover bzip2recover.c bzip2recover.res

dll: $(OBJS) libbz2.def bz2-1.res
	link /dll /implib:bz2-1.lib /out:bz2-1.dll /def:libbz2.def $(OBJS) bz2-1.res

lib: $(OBJS)
	lib /out:bz2-static.lib $(OBJS)

bzip2.res:
	$(RC) /fobzip2.res /d BZIP2 version.rc

bzip2recover.res:
	$(RC) /fobzip2recover.res /d BZIP2RECOVER version.rc

bz2-1.res:
	$(RC) /fobz2-1.res /d BZ21DLL version.rc

test: bzip2
	type tests\words1
	.\\bzip2 -1  < tests\sample1.ref > tests\sample1.rb2
	.\\bzip2 -2  < tests\sample2.ref > tests\sample2.rb2
	.\\bzip2 -3  < tests\sample3.ref > tests\sample3.rb2
	.\\bzip2 -d  < tests\sample1.bz2 > tests\sample1.tst
	.\\bzip2 -d  < tests\sample2.bz2 > tests\sample2.tst
	.\\bzip2 -ds < tests\sample3.bz2 > tests\sample3.tst
	@echo All six of the fc's should find no differences.
	@echo If fc finds an error on sample3.bz2, this could be
	@echo because WinZip's 'TAR file smart CR/LF conversion'
	@echo is too clever for its own good.  Disable this option.
	@echo The correct size for sample3.ref is 120,244.  If it
	@echo is 150,251, WinZip has messed it up.
	fc tests\sample1.bz2 tests\sample1.rb2
	fc tests\sample2.bz2 tests\sample2.rb2
	fc tests\sample3.bz2 tests\sample3.rb2
	fc tests\sample1.tst tests\sample1.ref
	fc tests\sample2.tst tests\sample2.ref
	fc tests\sample3.tst tests\sample3.ref



clean: 
	del *.obj
	del bz2-1.dll
	del bz2-1.exp
	del bz2-1.lib
	del bz2-1.res
	del bz2-static.lib
	del bzip2.exe
	del bzip2.res
	del bzip2recover.exe
	del bzip2recover.res
	del tests\sample1.rb2 
	del tests\sample2.rb2 
	del tests\sample3.rb2
	del tests\sample1.tst 
	del tests\sample2.tst
	del tests\sample3.tst

.c.obj: 
	$(CC) $(CFLAGS) -c $*.c /Fe$*.obj

